#coding=utf-8
#簡單地包裝xml存取功能

import os
import xml.etree.ElementTree as etree

def load(xmlFile, strList):
    '''讀取指定xmlFile的text內容。
    支援的讀取方法很簡單：
        strList就是元素關鍵字列表，依照順序一個一個查找，並將對應的內容用List依序回傳。如果有多個同名元素，只檢索第一個。
        輸入的list中所有型別都為str，輸出也是。
        如果有項目讀取失敗（元素不存在），則在對應的List位置上擺入空字串
    '''
    #傳入空strList毫無意義，這一定是打錯了
    if len(strList) == 0:
        print('在sXML.load中，傳入空的strList毫無意義，請檢查程式碼。')
        raise IndexError()
    #初始化xml解析樹
    xmlTree = etree.parse(xmlFile)
    answer = [] #等下把東西依序填進這裡
    for index in range(len(strList)):
        try:
            if strList[index] == '': #空的內容在這裡要視為不合法
                raise AttributeError()
            text = xmlTree.find('.//' + strList[index]).text
            answer.append(text)
        except AttributeError:
            answer.append('')
    return answer

def save(xmlFile, pairList = []):
    '''將pairList的內容存進指定的xml檔案中
    pairList == [(elementName_1, textValue_1), (elementName_2, textValue_2), ...]
    '''
    #整理xml樹
    NoteXml = etree.Element('SXML')
    for i in range(len(pairList)):
        etree.SubElement(NoteXml, pairList[i][0]).text = pairList[i][1]
    #寫入檔案
    with open(xmlFile, mode = 'w', encoding = 'utf-8') as File:
        File.write(etree.tostring(NoteXml, encoding = 'utf-8').decode('utf-8'))
